package top.lingkang.finalsession.core;

/**
 * 获取和设置会话id类，<br>
 * javax.servlet.http 中默认实现类 {@link top.lingkang.finalsession.javax.FinalSessionHandlerCookie}，<br>
 * 可以通过实现该类来定义会话id从cookie、请求头、或者参数中读取<br>
 */
public interface FinalSessionHandler<Request, Response> {
    /**
     * 获取session id、默认从cookie中获取；可以自定义从请求头中获取
     *
     * @param request
     * @param name    会话的id名称
     * @return 返回session id
     */
    String getSessionId(Request request, String name);

    /**
     * 设置session id ，默认将session id设置到cookie中
     *
     * @param response javaee 10+是 {@link jakarta.servlet.http.HttpServletResponse}。<br>
     *                 javaee servlet是{@link javax.servlet.http.HttpServletResponse}<br>
     *                 solon 是 {@link org.noear.solon.core.handle.Context}
     * @param name     session id的名称
     * @param value    session id
     */
    void setSessionId(Response response, String name, String value);
}
